package com.base.core.utils;


import com.base.config.SmsConfig;
import com.yunpian.sdk.YunpianClient;
import com.yunpian.sdk.model.Result;
import com.yunpian.sdk.model.SmsSingleSend;

import java.util.Map;

/**
 * @Description:    短信验证
 * @Date: 2019/1/7
 * @Author: LY
 */
@SuppressWarnings("All")
public class SendSingle {

    /**
     * @Description         云片短信接口-必须用post请求
     * @param code          验证码
     * @param phoneNumber   手机号
     */

    public static Result<SmsSingleSend> yunPianSms(String code,String mobile,String companyName,String text){

        YunpianClient clnt = null;

         try {
             //用户唯一标识
             String apikey = SmsConfig.API_KEY;

             //初始化client,apikey作为所有请求的默认值(可以为空)
             clnt = new YunpianClient(apikey).init();

             Map<String, String> param = clnt.newParam(2);

             //手机号
             param.put(YunpianClient.MOBILE, mobile);

             //短信模板
             param.put(YunpianClient.TEXT, text.replace("#companyName#",companyName).replace("#signUrl#",code));

             //发送短信并获取结果 账户:clnt.user().* 签名:clnt.sign().* 模版:clnt.tpl().* 短信:clnt.sms().* 语音:clnt.voice().* 流量:clnt.flow().* 隐私通话:clnt.call().*
             Result<SmsSingleSend> result = clnt.sms().single_send(param);

             //获取返回结果，返回码:r.getCode(),返回码描述:r.getMsg(),API结果:r.getData(),其他说明:r.getDetail(),调用异常:r.getThrowable()

             return result;

         }catch (Exception e){
             e.printStackTrace();
             return null;
         }finally {

             if (clnt != null){
                 //最后释放client
                 clnt.close();
             }

         }

    }


    /**
     * @Description         云片短信接口-必须用post请求
     * @param text          已审核短信模板
     * @param code          验证码
     * @param phoneNumber   手机号
     */
    public static Result<SmsSingleSend> yunPianSms(String text, String code,String mobile,Integer timeout){

        YunpianClient clnt = null;

        try {
            //用户唯一标识
            String apikey = SmsConfig.API_KEY;

            //初始化client,apikey作为所有请求的默认值(可以为空)
            clnt = new YunpianClient(apikey).init();

            Map<String, String> param = clnt.newParam(2);

            //手机号
            param.put(YunpianClient.MOBILE, mobile);

            //短信模板
            param.put(YunpianClient.TEXT, text.replace("#code#",code).replace("#timeout#",String.valueOf(timeout)));

            //发送短信并获取结果 账户:clnt.user().* 签名:clnt.sign().* 模版:clnt.tpl().* 短信:clnt.sms().* 语音:clnt.voice().* 流量:clnt.flow().* 隐私通话:clnt.call().*
            Result<SmsSingleSend> result = clnt.sms().single_send(param);

            //获取返回结果，返回码:r.getCode(),返回码描述:r.getMsg(),API结果:r.getData(),其他说明:r.getDetail(),调用异常:r.getThrowable()

            return result;

        }catch (Exception e){
            e.printStackTrace();

            return null;
        }finally {

            if (clnt != null){
                //最后释放client
                clnt.close();
            }

        }

    }

}
